# 基数排序函数
def radixSort():
    global a, n
    # 查找数组中的最大值，以确定排序的轮数
    max_num = max(a)
    # 初始化exp为1，代表当前比较的位数（个位、十位、百位等）
    exp = 1
    # 当最大值除以exp的结果大于0时，表示当前位数上还有值需要排序
    while max_num // exp > 0:
        # 创建10个桶，用于按当前位数的数字对数组元素进行分类
        buckets = [[] for _ in range(10)]
        # 遍历数组a，根据当前位数的值将元素分配到相应的桶中
        for i in a:
            index = i // exp % 10
            buckets[index].append(i)
        # 重新排列数组a，将桶中的元素按顺序放回数组中
        j = 0
        for index in range(10):
            for k in buckets[index]:
                a[j] = k
                j += 1
        # 将exp乘以10，移动到下一位数（例如，从个位到十位）
        exp *= 10

n = int(input())
a = list(map(int, input().split()))
radixSort()
print(*a)



